package com.itranswarp.learnjava;

    //什么是不变类:
    /**
     * 1.定义class的时候使用final,无法派生子类.
     * 2.每个字段使用final,保证创建实例后,无法修改任何字段.
     * 
     * java 14 开始,引入了新的record类. 定义Record类是, 使用关键字record. 
     * public record class Point(int x , int y){};
     * 
     * record 生成的不变类仍然可以使用参数校验 
     * public Point{
     *      if(x < 0 || y < 0){  //x与y 不得为负数
     *          throw new IllegalArgumentException();
     *      }
     * }
     * 
     * record生成的不变类使用静态方法  of 关键字
     */

public record Point(int x , int y){
    public Point{
        if(x < 0 || y < 0){
            throw new IllegalArgumentException();
        }
    }
    public static Point of(){
        return new Point(0,0);
    }
    public static Point of(int x , int y){
        return new Point(x , y);
    }
};


